'''
BeautifulSoup4将复杂的HTML文档转换成一个复杂的树形结构，每个节点都是Python对象，所有的对象可以归纳为4中：
Tag
NavigableString
BeautifulSoup
Comment
'''
import re
from bs4 import BeautifulSoup
#Tag  标签及其内容：拿到他的第一个内容，标签及其内容
#print(bs.title.string)#这样写没有标签
#NeStringavigabl   标签里的字符串
file = open ("./新建文本文档.html","rb")
html = file.read().decode("utf-8")
bs = BeautifulSoup(html,"html.parser")
# #print(bs.title)
# print(type(bs.head))
# #1.Tag  标签及其内容：拿到他的第一个内容，标签及其内容
# print(bs.title.string)
#NeStringavigabl   标签里的字符串

# print(bs.a.attrs)
# print(type(bs))


#3.BeautifulSoup表示整个文档
#print(bs.name)
#print(bs)

# print(bs.a.string)
#print(type(bs.a.string))

#4.Comment   是一个特殊的NeStringavigabl ,输出的内容不包括注释符号






#----------------------------------



#文档的遍历
#print(bs.head.contents[1])
#更多内容搜索文档



#文档的搜索
#1.find_all
#字符串过滤：会查找与字符串完全匹配的内容
# t_list= bs.find_all("a")
# print(t_list)



#2.正则表达式搜索：使用search()方法匹配内容

# l_list=bs.find_all(re.compile("a"))
# #3.方法：传入一个函数，根据函数的的要求进行搜索(了解）
# def name_is_exists(tag):
#     return tag.has_attr("name")


#2.kwargs   参数
#t_list=bs.find_all(id="head")
# t_list = bs.find_all(class_= True)#class有下划线是因为html由class，python里也有class，如果不加下划线python就会报错，为了避免无用关键字，在html里加——
#
# for item in t_list:
#     print(item)


#3.text参数
# t_list=bs.find_all(text="hao123")
# t_list = bs.find_all(text=["hao123","地图","贴吧"])
#t_list = bs.find_all(text = re.compile("/d"))#应用正则表达式来查找包含特定文本的内容
#
# for item in t_list:
#     print (item)


#4.参数
# t_list = bs.find_all("a",limit=3)#通过limit来限制信息的数量
# for item in t_list:
#     print(item)





#5.CSS选择器。。。。学习一下CSS

#t_list = bs.select('title')#通过标签来查找
#t_list = bs.select(".mnav")#mnav表示类名，前面加一个点表示从类名中查找
#t_list = bs.select("#u1")#通过id来查找
#t_list = bs.select("a[class='bri']")#通过属性来查找
#t_list = bs.select("head>title")#通过子标签来查找
t_list = bs.select(".mnav~.bri")#通过兄弟标签来查找
for item in t_list:
    print(item)
